Cross-Site Scripting (XSS) এবং Cross-Site Request Forgery (CSRF) হলো দুটি সাধারণ নিরাপত্তা সমস্যা যা ওয়েব অ্যাপ্লিকেশনগুলিকে ঝুঁকিতে ফেলতে পারে। এই আক্রমণগুলো সাধারণত ব্যবহারকারী বা সার্ভারের অজান্তে ক্ষতিকর কোড অথবা রিকোয়েস্ট তৈরি করে, যার ফলে ব্যবহারকারীর তথ্য চুরি বা অ্যাপ্লিকেশন থেকে অবৈধ অ্যাক্সেস হতে পারে। তবে, কিছু সুরক্ষা পদ্ধতি রয়েছে যা এই আক্রমণগুলো প্রতিরোধ করতে সহায়ক হতে পারে। এই টিউটোরিয়ালে আমরা XSS এবং CSRF আক্রমণ থেকে সুরক্ষা ব্যবস্থা নিয়ে আলোচনা করব।
XSS হল একটি আক্রমণ যেখানে আক্রমণকারী ক্ষতিকর স্ক্রিপ্ট (যেমন JavaScript) ওয়েব পেজে ইনজেক্ট করে। ব্যবহারকারী যখন সেই ওয়েব পেজটি ভিজিট করেন, তখন আক্রমণকারী স্ক্রিপ্টটি এক্সিকিউট হয় এবং ব্যবহারকারীর সেশনের তথ্য চুরি করতে পারে, যেমন কুকি, পাসওয়ার্ড বা অন্যান্য সংবেদনশীল ডেটা।
Input Validation এবং Output Encoding:
&
চিহ্নটি &
এ রূপান্তরিত করা।উদাহরণ (JavaScript Escape):
var userInput = "<script>alert('Hacked!');</script>";
var safeInput = userInput.replace(/</g, "<").replace(/>/g, ">");
document.getElementById("output").innerHTML = safeInput;
HTTPOnly Cookies ব্যবহার করুন:
setcookie("session", "value", time() + 3600, "/", "", true, true); // HttpOnly এবং Secure ফ্ল্যাগ
Content Security Policy (CSP):
উদাহরণ (CSP Header):
header("Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none';");
CSRF হল একটি আক্রমণ যেখানে আক্রমণকারী ব্যবহারকারীকে একটি ক্ষতিকর রিকোয়েস্ট পাঠাতে প্ররোচিত করে, যা ঐ ব্যবহারকারীর অ্যাকাউন্টের সাথে সংযুক্ত থাকে। এটি সাধারণত তখন ঘটে যখন ব্যবহারকারী লগইন অবস্থায় থাকেন এবং আক্রমণকারী একটি ফর্ম বা URL ট্রিকের মাধ্যমে তাদের অ্যাকাউন্টে অ্যাক্সেস পায়।
ধরা যাক, একজন ব্যবহারকারী লগইন হয়ে আছেন এবং আক্রমণকারী তাদের একটি লিঙ্ক পাঠান:
<a href="https://bank.com/transfer?amount=1000&to=attacker_account">Click here to transfer money</a>
এই লিঙ্কে ক্লিক করলে, ব্যবহারকারীর ব্যাংক অ্যাকাউন্ট থেকে টাকা ট্রান্সফার হয়ে যাবে।
CSRF Tokens ব্যবহার করা:
উদাহরণ (PHP):
// সেশন শুরু করা
session_start();
// CSRF Token তৈরি করা
if (empty($_SESSION['csrf_token'])) {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32)); // নিরাপদ টোকেন তৈরি
}
// CSRF Token ইনপুটে যোগ করা
echo '<input type="hidden" name="csrf_token" value="' . $_SESSION['csrf_token'] . '">';
ব্লক রিকোয়েস্ট (PHP):
// CSRF Token যাচাই
if ($_POST['csrf_token'] !== $_SESSION['csrf_token']) {
die("CSRF Token mismatch.");
}
SameSite Cookie Attribute ব্যবহার করা:
setcookie("session", "value", time() + 3600, "/", "", true, true);
header('Set-Cookie: session=abc123; SameSite=Strict');
Use Referer Header Validation:
Referer
হেডার ব্যবহার করে যাচাই করুন যে রিকোয়েস্টটি সঠিক সাইট থেকে এসেছে কিনা।if ($_SERVER['HTTP_REFERER'] !== 'https://yourdomain.com') {
die("Invalid referer");
}
XSS এবং CSRF হল সাধারণ ওয়েব নিরাপত্তা আক্রমণ, যা ওয়েব অ্যাপ্লিকেশনগুলিকে বিপদে ফেলতে পারে। তবে সঠিক নিরাপত্তা ব্যবস্থা, যেমন input validation, output encoding, CSRF tokens, SameSite cookies, এবং Content Security Policy (CSP) ব্যবহার করে এই আক্রমণগুলো প্রতিরোধ করা সম্ভব। এটি আপনার ওয়েব অ্যাপ্লিকেশনকে নিরাপদ রাখে এবং ব্যবহারকারীর তথ্য সুরক্ষিত রাখে।